// @Author: Leen Van Pelt

package views.createViews;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;

import Exceptions.TooManyCharactersException;
import core.logic.services.utilServices.ValidatieService;
import core.models.dataModels.createModels.ToevoegenVliegtuigModel;
import core.models.domainModel.Eigenaar;

import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

import controllers.createControllers.ToevoegenVliegtuigController;

public class ToevoegenVliegtuigView extends JFrame
{
	private static final long serialVersionUID = 1L;
	private ToevoegenVliegtuigModel mijnmodel;
	private JButton btnToevoegen;
	private JComboBox<Integer> cbAantalPiloten;
	private JComboBox<Integer> cbAantalStewards;
	private JComboBox<Integer> cbAantalZetelsPerRij;
	private JComboBox<Integer> cbAantalRijenBusiness;
	private JComboBox<Integer> cbAantalRijenEconomy;
	private JComboBox<Eigenaar> cbEigenaar;
	private JTextField txtModel;
	private JTextField txtType;
	private GroupLayout groupLayout;

	public ToevoegenVliegtuigView(ToevoegenVliegtuigModel ditmodel) 
	{
		this.mijnmodel = ditmodel;
		groupLayout = new GroupLayout(getContentPane());
		setTitle("Vliegtuig toevoegen");
		
		JLabel lblAantalPiloten = new JLabel("Aantal piloten:");
		JLabel lblAantalStewards = new JLabel("Aantal stewards:");
		JLabel lblAantalZetelsPerRij = new JLabel("Aantal zetels per rij:");
		JLabel lblAantalRijenBusiness = new JLabel("Aantal rijen Business:");
		JLabel lblAantalRijenEconomy = new JLabel("Aantal rijen Economy:");
		JLabel lblEigenaar = new JLabel("Eigenaar:");
		JLabel lblModel = new JLabel("Model:");
		JLabel lblType = new JLabel("Type:");
		txtModel = new JTextField();
		txtType = new JTextField();
		
		cbAantalPiloten = new JComboBox<Integer>();
		for(Integer dezeint:mijnmodel.get_mogelijkaantalpiloten())
		{
			cbAantalPiloten.addItem(dezeint);
		}
		
		cbAantalStewards = new JComboBox<Integer>();
		for(Integer dezeint:mijnmodel.get_mogelijkaantalstewards())
		{
			cbAantalStewards.addItem(dezeint);
		}
		
		cbAantalZetelsPerRij = new JComboBox<Integer>();
		for(Integer dezeint:mijnmodel.get_mogelijkaantalzetelsperrij())
		{
			cbAantalZetelsPerRij.addItem(dezeint);
		}
		
		cbAantalRijenBusiness = new JComboBox<Integer>();
		for(Integer dezeint:mijnmodel.get_mogelijkaantalrijenbusiness())
		{
			cbAantalRijenBusiness.addItem(dezeint);
		}
		
		cbAantalRijenEconomy = new JComboBox<Integer>();
		for(Integer dezeint:mijnmodel.get_mogelijkaantalrijeneconomy())
		{
			cbAantalRijenEconomy.addItem(dezeint);
		}
		
		cbEigenaar = new JComboBox<Eigenaar>();
		for(Eigenaar dezeEigenaar:mijnmodel.get_mogelijkeEigenaars())
		{
			cbEigenaar.addItem(dezeEigenaar);
		}		
		
		btnToevoegen = new JButton("Toevoegen");
		
		btnToevoegen.addActionListener(new ActionListener() 
		{
			@Override
			public void actionPerformed(ActionEvent e) 
			{
				Integer maxNumberOfCharacters;
				if (e.getSource()== btnToevoegen)
				{
					

					mijnmodel.setEigenaar(
							((Eigenaar)(cbEigenaar.getSelectedItem())));
					mijnmodel.setAantalpilotennodig((Integer)(cbAantalPiloten.getSelectedItem()));
					mijnmodel.setAantalstewardsnodig((Integer)(cbAantalStewards.getSelectedItem()));
					mijnmodel.setAantalzetelsperrij((Integer)(cbAantalZetelsPerRij.getSelectedItem()));
					mijnmodel.setAantalrijenbusiness(((Integer)(cbAantalRijenBusiness.getSelectedItem())));
					mijnmodel.setAantalrijeneconomy((Integer)(cbAantalRijenEconomy.getSelectedItem())) ;
					
					//checken of in txtModel en txtType niet te veel karakters zijn ingevoerd:
					// niet meer dan 50
					maxNumberOfCharacters = 50;
					try 
					{
						if (!(ValidatieService.isLength(txtModel, maxNumberOfCharacters, "Veldje Model")))
						{
							throw new TooManyCharactersException(maxNumberOfCharacters);
						}
						
						if (!(ValidatieService.isLength(txtType, maxNumberOfCharacters, "Veldje Type")))
						{
							throw new TooManyCharactersException(maxNumberOfCharacters);
						}
						
						mijnmodel.setModel(txtModel.getText());
						mijnmodel.setType(txtType.getText());
						ToevoegenVliegtuigController.handleView(mijnmodel);
						JOptionPane.showMessageDialog(null, "Vliegtuig succesvol toegevoegd aan database", "succes!", JOptionPane.INFORMATION_MESSAGE);
						
					} catch (Exception e2) 
					{
						//JOptionPane.showMessageDialog(null, e2.getMessage(), "Exception!", JOptionPane.ERROR_MESSAGE);
						//uitgecommentarieerd want er wordt al een message gegeven bij de ValidatieService
						//eigenlijk zou dat niet mogen daar, maar mogen de JOptionPane weergaves enkel in de view getoond worden.
					}
					
					
				}
				
			}
		});
		
		groupLayout.setHorizontalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addGap(26)
					.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
						.addComponent(btnToevoegen)
						.addGroup(groupLayout.createSequentialGroup()
							.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
								.addComponent(lblAantalPiloten)
								.addComponent(lblAantalStewards)
								.addComponent(lblAantalZetelsPerRij)
								.addComponent(lblAantalRijenBusiness)
								.addComponent(lblEigenaar)
								.addComponent(lblAantalRijenEconomy)
								.addComponent(lblType)
								.addComponent(lblModel))
							.addGap(37)
							.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
								.addComponent(cbAantalRijenEconomy, GroupLayout.PREFERRED_SIZE, 54, GroupLayout.PREFERRED_SIZE)
								.addComponent(cbAantalRijenBusiness, GroupLayout.PREFERRED_SIZE, 54, GroupLayout.PREFERRED_SIZE)
								.addComponent(cbAantalZetelsPerRij, GroupLayout.PREFERRED_SIZE, 54, GroupLayout.PREFERRED_SIZE)
								.addComponent(cbAantalStewards, GroupLayout.PREFERRED_SIZE, 54, GroupLayout.PREFERRED_SIZE)
								.addComponent(cbAantalPiloten, GroupLayout.PREFERRED_SIZE, 54, GroupLayout.PREFERRED_SIZE)
								.addComponent(cbEigenaar, GroupLayout.PREFERRED_SIZE, 200, GroupLayout.PREFERRED_SIZE)
								.addComponent(txtModel,GroupLayout.PREFERRED_SIZE,90, GroupLayout.PREFERRED_SIZE)
								.addComponent(txtType,GroupLayout.PREFERRED_SIZE,90,GroupLayout.PREFERRED_SIZE))))
					.addContainerGap(60, Short.MAX_VALUE))
		);
		groupLayout.setVerticalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addGap(23)
					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
						.addComponent(lblEigenaar)
						.addComponent(cbEigenaar, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
					.addGap(18)
					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
						.addComponent(lblAantalPiloten)
						.addComponent(cbAantalPiloten, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
					.addGap(18)
					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
						.addComponent(lblAantalStewards)
						.addComponent(cbAantalStewards, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
					.addGap(18)
					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
						.addComponent(lblAantalZetelsPerRij)
						.addComponent(cbAantalZetelsPerRij, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
					.addGap(18)
					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
						.addComponent(lblAantalRijenBusiness)
						.addComponent(cbAantalRijenBusiness, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
					.addGap(18)
					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
						.addComponent(lblAantalRijenEconomy)
						.addComponent(cbAantalRijenEconomy, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
					.addGap(18)
					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
						.addComponent(lblModel)
						.addComponent(txtModel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
					.addGap(18)
					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
						.addComponent(lblType)
						.addComponent(txtType, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
					.addGap(20)
					.addComponent(btnToevoegen)
					.addContainerGap(38, Short.MAX_VALUE))
		);
		getContentPane().setLayout(groupLayout);
		// TODO Auto-generated constructor stub
		
		
	}
}
